﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Core;

namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsT_Log_Canibilizacion_Mov_DetDAO
    {
        private AutomotrizEntities ContextoDeObjs = new AutomotrizEntities();

        public bool Insertar(T_LOG_CANIBALIZACION_MOV_DET Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("T_LOG_CANIBALIZACION_MOV_DET", Obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        public bool Modificar(T_LOG_CANIBALIZACION_MOV_DET obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_LOG_CANIBALIZACION_MOV_DET", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;

            }
            return true;
        }

        public bool Eliminar(T_LOG_CANIBALIZACION_MOV_DET obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_LOG_CANIBALIZACION_MOV_DET", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }


        public List<T_LOG_CANIBALIZACION_MOV_DET_EN> ListaPorIdMovCab(int intidMovCab) {

            List<T_LOG_CANIBALIZACION_MOV_DET_EN> lista = new List<T_LOG_CANIBALIZACION_MOV_DET_EN>();

            var q = from d in ContextoDeObjs.T_LOG_CANIBALIZACION_MOV_DET
                    join m in ContextoDeObjs.TD_MATERIAL on d.ID_MATERIAL.Value equals m.ID_MATERIAL
                    where d.ID_LOG_CANIB_MOV_CAB == intidMovCab
                    select new T_LOG_CANIBALIZACION_MOV_DET_EN {
                    ID_LOG_CANIB_MOV_DETALLE=d.ID_LOG_CANIB_MOV_DETALLE,
                    ID_LOG_CANIB_MOV_CAB=d.ID_LOG_CANIB_MOV_CAB.Value,
                    ID_MATERIAL=d.ID_MATERIAL.Value,
                    COD_MATERIAL=m.COD_MATERIAL,
                    DES_MATERIAL=m.DES_MATERIAL,
                    CANTIDAD=d.CANTIDAD.Value,
                    CANT_STOCK=d.CANT_STOCK.Value,
                    CANT_TRANSITO=d.CANT_TRANSITO.Value,
                    CUP_D=d.CUP_D.Value,
                    CUP_S=d.CUP_S.Value,
                    FOB=d.FOB.Value,
                    OBSERVACION=d.OBSERVACION

                    };
            lista = q.ToList();

            return lista;
        
        }



        public bool eliminaT_LOG_CANIBALIZACION_MOV_DET(int intIdLogCanbMovCab)
        {

            ContextoDeObjs.ExecuteStoreCommand("DELETE FROM T_LOG_CANIBALIZACION_MOV_DET WHERE ID_LOG_CANIB_MOV_CAB="+intIdLogCanbMovCab);
            return true;

        }




        public List<TD_MATERIAL_EN> ListaMaterialesMovimientoEntrada(int intIdLogCanibalizacionCab,int intIdOrg ,int intTotalRegistros)
        {
            List<TD_MATERIAL_EN> listado = new List<TD_MATERIAL_EN>();
            var q = "SELECT f.ID_MATERIAL, f.COD_MATERIAL, f.DES_MATERIAL, f.MODELO, f.GRUPO_ARTICULO, " +
                    "f.STOCK_ACTUAL, f.CANT_TRANSITO, f.CUP_S, f.CUP_D, f.FOB, f.CANT_SALIDA, f.CANT_ENTRADA, f.TOTAL_SALDO " +
                    "FROM DBO.FU_LISTA_CANIBALIZACION_SALIDA_VS_ENTRADA(" + intIdLogCanibalizacionCab + "," + intIdOrg + ") AS f WHERE f.TOTAL_SALDO>0  ORDER BY f.TOTAL_SALDO DESC ";
            var lista = ContextoDeObjs.ExecuteStoreQuery<TD_MATERIAL_EN>(q).Take(intTotalRegistros);
            listado = lista.ToList();            
            return listado;

        }
       
    }
}
